1. Field of the Invention
In general, the present invention relates to optimizing the performance of applications running on a computer system. More particularly, the present invention relates to optimizing the utilization of a computer system's resources considering predefined performance targets of applications using said resources. Still more particularly, the present invention applies especially to applications, as for example, distributed data movement applications, comprising several independently executable tasks, wherein each task comprises at least one thread and each thread uses mainly one resource. Further, the present invention assumes that performance information on thread level is provided for each of these applications and that utilization information of the computer system's resources is available.
2. Description of the Related Art
It is well known in the art that most applications use several different resources during execution. A backup/restore client application, for example, comprises the independently executable tasks of reading data from a storage device, performing a data compression, and sending the data over a network to a server component. Each of these processes uses one particular resource, which determines the performance of this process. So, the most important characteristics for the performance of reading data are speed and throughput of the storage device, although the CPU is utilized as well for reading data.
Usually, the utilization of the different resources varies depending on the number and priorities of applications accessing said resources. This may result in an overutilization of some resources, impacting the performance of those applications using an overutilized resource.
The Application Response Measurement (ARM) standard describes a procedure to determine the utilization of resources or the duration of transactions used or processed by a data manipulation process. This measurement of the utilization or the transaction times is initiated by the application itself. However, the ARM standard covers measurement only. The usage of this utilization information is not part of the standard. Instead, workload managers, like IBM Workload Manager or IBM Enterprise Workload Manager (WLM/eWLM), make use of these values to control external schedulers for some resources. State of the art schedulers need permanent and dynamic adjustment. They are only able to prioritize applications, but can not prioritize single threads or tasks within an application (see FIG. 1).
A starting point for the present invention is an infrastructure and a monitoring mechanism as described in “IPCOM000138798D”. The central module of this infrastructure is a Performance Monitor Interface providing performance measurement capabilities to the applications to be monitored. To collect detailed performance information, this interface measures the runtime of each particular thread within an application during the process flow. The results of these measurements are monitored by a central monitoring component, serving as a User Interface. By correlating this information and in consideration of the total process duration, it is possible to draw conclusions about the whole system environment concerning performance and utilization.